<template>
  <div class="import">
    <div class="app-container">
      <el-card shadow="always" :body-style="{ padding: '20px' }">
        <div slot="header">
          <span>员工导入</span>
        </div>
        <!-- card body -->
        <UploadExcel :on-success="handleSuccess" :before-upload="beforeUpload" />
      </el-card>
    </div>
  </div>
</template>

<script>
import { importEmployees } from '@/api/employees.js'
import { formatExcelDate } from '@/utils/index.js'
export default {
  methods: {
    beforeUpload (file) {
      const isLt1M = file.size / 1024 / 1024 < 2

      if (isLt1M) {
        return true
      }

      this.$message({
        message: '文件不能大于2M',
        type: 'warning'
      })
      return false
    },
    async handleSuccess ({ results, header }) {
      // console.log(results, header)
      const enResults = this.transformResults(results)
      // console.log('转换结果：', enResults)
      await importEmployees(enResults)
      this.$message.success('上传成功')
      // 返回员工列表页面
      this.$router.back()
    },

    transformResults (results) {
      const userMap = {
        '入职日期': 'timeOfEntry',
        '聘用形式': 'formOfEmployment',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber',
        '部门': 'departmentName'
      }
      const newResults = []
      results.forEach(item => {
        const enUser = {}
        for (const zhkey in item) {
          const enKey = userMap[zhkey]
          if (enKey === 'timeOfEntry' || enKey === 'correctionTime') { enUser[enKey] = formatExcelDate(item[zhkey], '-') } else { enUser[enKey] = item[zhkey] }
        }
        newResults.push(enUser)
      })
      return newResults
    }
    // 老师的带注释代码↓👇
    // 读取到的results中员工数据属性名是中文，需要转换为英文属性名
    // transformResults (results) {
    //   // 属性名中英对照映射关系
    //   const userMap = {
    //     '入职日期': 'timeOfEntry',
    //     '聘用形式': 'formOfEmployment',
    //     '手机号': 'mobile',
    //     '姓名': 'username',
    //     '转正日期': 'correctionTime',
    //     '工号': 'workNumber',
    //     '部门': 'departmentName'
    //   }
    //   /**
    //    * 1. 准备一个存储转换结果的数组
    //    * 2. 循环results数组，根据userMap中英映射关系，进行装换
    //    * 3. 返回转换后的结果
    //    */
    //   const newResults = []
    //   results.forEach(item => {
    //     // 中文属性的item（员工信息）转换成英文的
    //     const enUser = {}
    //     // zhKey 是 中文属性名
    //     for (const zhKey in item) {
    //       // 根据zhKey结合映射关系获取enKey(英文属性名)
    //       const enKey = userMap[zhKey]
    //       if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
    //         // 因为excel中时间读取多了70年，需要格式化为正确时间
    //         enUser[enKey] = formatExcelDate(item[zhKey], '-')
    //       } else {
    //         // 存储英文属性名和对应的值
    //         enUser[enKey] = item[zhKey]
    //       }
    //     }
    //     newResults.push(enUser)
    //   })
    //   return newResults
    // }
  }
}
</script>

<style>
</style>
